#include <stdarg.h>
#include <stdio.h>
#ifndef _LOG_MSG_H
#define _LOG_MSG_H

/******************************************************
printf颜色格式：
printf("\033[字背景颜色;字体颜色m字符串\033[0m" );
部分颜色代码:
字背景颜色: 40--49                字颜色: 30--39
40: 黑                                    30: 黑
41: 红                                    31: 红
42: 绿                                    32: 绿
43: 黄                                    33: 黄
44: 蓝                                    34: 蓝
45: 紫                                    35: 紫
46: 深绿                                  36: 深绿
47：白色                                  37：白色
****************************************************/


#define    COLOR_NONE                     "\033[0m"
#define    FONT_COLOR_RED                 "\033[0;31m"
#define    FONT_COLOR_BLUE                "\033[1;34m"
#define    BACKGROUND_COLOR_RED           "\033[41m"    
#define    BG_RED_FONT_YELLOW             "\033[41;33m"
#define    MSG_LEN 512

//定义打印消息的等级
typedef enum{
    NONE=0,  //不打印消息
    ERROR,   //只是打印错误
    WARNING, //打印警告和错误 
    INFO,    //打印INFO WARNING 和 ERROR 
	  DEBUG,
    ALL,
    MAX_ERR_TYPE
}LOGLEVEL;

#define DEBUG
#define MESSAGE_LEVEL  INFO

static char* Register_Module[100];

#ifdef DEBUG
#define log_msg(LOGLEVEL,format,...) do{\
  char* Log_Header[MAX_ERR_TYPE] = {\
	  								"NONE",\                                 
                    "\033[41m[ERROR]\033[0m",\
					     			"\033[43m[WARNING]\033[0m",\
					     			"\033[42m[INFO]\033[0m",\
									  "\033[47m[DEBUG]\033[0m",\
                    "ALL"};\
  if(LOGLEVEL > MESSAGE_LEVEL){\
    break;\
  }else if(LOGLEVEL == INFO){\
    fprintf(stdout,"\n%s:"format,Log_Header[LOGLEVEL],##__VA_ARGS__);\
  }else{\
    fprintf(stdout,"\n%s:"format,Log_Header[LOGLEVEL],##__VA_ARGS__);\
    printf("file = %s,function = %s,line = %d\n",__FILE__,__FUNCTION__,__LINE__);\
  }\
  fflush(stdout);\
}while(0)

#define register_module() do{\
\
}while(0)

#else
#define log_msg(LOGLEVEL,format,...)
#endif  //DEBUG

#endif
